package com.hankol.newretail.widget;
import android.graphics.Rect;
import android.view.View;

import androidx.recyclerview.widget.RecyclerView;

public class GridItemDecoration extends RecyclerView.ItemDecoration {

   private int spanCount;
   private int spacing;
   private boolean includeEdge;
   private boolean includeTopEdge;
   private boolean includeBottomEdge;

   public GridItemDecoration(int spanCount, int spacing, boolean includeEdge) {
      this.spanCount = spanCount;
      this.spacing = spacing;
      this.includeEdge = includeEdge;
      this.includeTopEdge = includeEdge;
      this.includeBottomEdge = includeEdge;
   }

   public GridItemDecoration(int spanCount, int spacing, boolean includeEdge, boolean includeTopEdge, boolean includeBottomEdge) {
      this.spanCount = spanCount;
      this.spacing = spacing;
      this.includeEdge = includeEdge;
      this.includeTopEdge = includeTopEdge;
      this.includeBottomEdge = includeBottomEdge;
   }

   @Override
   public void getItemOffsets(Rect outRect, View view, RecyclerView parent, RecyclerView.State state) {
      int position = parent.getChildAdapterPosition(view); // item position
      int column = position % spanCount; // item column

      if (includeEdge) {
         outRect.left = spacing - column * spacing / spanCount; // spacing - column * ((1f / spanCount) * spacing)
         outRect.right = (column + 1) * spacing / spanCount; // (column + 1) * ((1f / spanCount) * spacing)

         if (includeTopEdge) {
            if (position < spanCount) { // top edge
               outRect.top = spacing;
            }
         }

         if (includeBottomEdge) {
            outRect.bottom = spacing; // item bottom
         }
      } else {
         outRect.left = column * spacing / spanCount; // column * ((1f / spanCount) * spacing)
         outRect.right = spacing - (column + 1) * spacing / spanCount; // spacing - (column + 1) * ((1f /    spanCount) * spacing)
         if (position >= spanCount) {
            outRect.top = spacing; // item top
         }
      }
   }
}